import { Card, CardCombination } from './card'
import { Player } from './game'

// AI接口请求数据
export interface AIRequest {
  gameState: {
    players: {
      seatid: number        // 玩家座位号
      cards: number[]       // 玩家手牌 (使用牌ID数组)
      patterntype: number   // 牌型
    }[]
    currentRound: number    // 当前轮次
    lastPlay: number[]      // 上一次出牌 (牌ID数组)
    trumpCard: number | null // 级牌ID
  }
  aiCards: number[]         // AI手牌 (牌ID数组)
}

// AI接口响应数据
export interface AIResponse {
  success: boolean
  data: {
    recommendedCards: number[] // 推荐出牌 (牌ID数组)
    confidence: number         // 置信度 (0-1)
    reasoning: string          // 推理说明
    patternType: number        // 牌型
  }
  message?: string
  error?: string
}

// 网络错误类型
export interface NetworkError {
  code: string
  message: string
  status?: number
}

// API配置
export interface APIConfig {
  baseURL: string
  timeout: number
  retryCount: number
}

// 出牌历史记录项
export interface PlayActionItem {
  seatid: number        // 座位号 (0-3)
  patterntype: number   // 牌型 (0=过牌, 1=单牌, 2=对子, 等等)
  cards: number[]       // 出的牌 (API格式ID)
}

// 出牌接口请求数据
export interface PlayRequest {
  record_id: string                 // 当前对局的唯一ID
  trace_id: string                  // 当前请求的唯一ID
  position: number                  // 出牌玩家座位号 (0-3)
  handcards: number[]               // 玩家手牌 (API格式ID)
  card_play_action_seq: PlayActionItem[]  // 历史出牌序列
  mainface: number                  // 级牌使用牌面的定义 (rank值)
  ranks: number[]                   // 玩家的走科顺序
  playtype: number                  // 玩法类型 (1=经典玩法)
  fstplay: number                   // 是否是主动出牌 (1=主动, 0=跟牌)
}

// 出牌接口响应数据
export interface PlayResponse {
  code: number          // 请求是否成功 (0=成功)
  pattern: number       // 牌型
  action: number[]      // 需要出的牌 (API格式ID)
}